package com.kongxiang.cubebit.base.common.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.Date;
import java.util.Map;

/**
 * 通用请求DTO类，用于封装各种API请求的基本信息和数据。
 *
 * @param <T> 请求体的类型参数
 */
@Data
public class GenericRequest<T> {
    /**
     * 请求唯一标识，用于标识请求的唯一性。
     */
    @Schema(description = "请求的唯一标识符")
    private String id;

    /**
     * 请求时间戳，表示请求生成的时间。
     */
    @Schema(description = "生成请求的时间戳")
    private Date timestamp;

    /**
     * 客户端标识，用于识别请求的来源客户端。
     */
    @Schema(description = "发送请求的客户端标识符")
    private String clientId;

    /**
     * API版本号，表示请求所使用的API接口版本。
     */
    @Schema(description = "API接口的版本号")
    private String version;

    /**
     * 请求体，支持泛型，可以包含各种类型的数据。
     */
    @Schema(description = "请求体的内容")
    private T body;

    /**
     * 扩展信息，用于存储额外的信息，格式为键值对。
     */
    @Schema(description = "附加的扩展信息，键值对形式")
    private Map<String, Object> extensions;
}